/**
 * 冒泡排序函数
 * 通过重复走访要排序的数列，一次比较两个元素，
 * 如果他们的顺序错误就把他们交换过来。
 * 走访数列的工作是重复地进行直到没有再需要交换，
 * 也就是说该数列已经排序完成。
 * @param a 待排序的数组
 * @param n 待排序的数组长度
 */
public static void bubbleSort(int[] a, int n) {
    if (n == 0 || n == 1) {
        return; // 如果数组长度为0或1，无需排序直接返回
    }

    boolean swapped;
    for (int i = 0; i < n - 1; i++) {
        swapped = false; // 每次遍历前假设没有元素需要交换
        for (int j = 0; j < n - i - 1; j++) {
            if (a[j] > a[j + 1]) {
                // 如果前一个元素比后一个元素大，交换它们
                int temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
                swapped = true; // 发生了交换
            }
        }
        // 如果一次遍历中没有交换发生，说明数组已经有序，可以结束排序
        if (!swapped) {
            break;
        }
    }
} // end bubbleSort

